security_check(); if ($resultat_session == 'c') { header("Location: ../utilisateurs/mon_compte.php?change_mdp=yes"); die(); } else if ($resultat_session == '0') { header("Location: ../logout.php?auto=1"); die(); } if (!checkAccess()) { header("Location: ../logout.php?auto=1"); die(); } // Initialisation des variables $user_login = isset($_POST["user_login"]) ? $_POST["user_login"] : (isset($_GET["user_login"]) ? $_GET["user_login"] : NULL); $msg = ''; $journal_connexions=isset($_POST['journal_connexions']) ? $_POST['journal_connexions'] : (isset($_GET['journal_connexions']) ? $_GET['journal_connexions'] : 'n'); $duree=isset($_POST['duree']) ? $_POST['duree'] : NULL; // fonction de sécuritée // uid de pour ne pas refaire renvoyer plusieurs fois le même formulaire // autoriser la validation de formulaire $uid_post===$_SESSION['uid_prime'] if(empty($_SESSION['uid_prime'])) { $_SESSION['uid_prime']=''; } if (empty($_GET['uid_post']) and empty($_POST['uid_post'])) { $uid_post=''; } else { if (isset($_GET['uid_post'])) { $uid_post=$_GET['uid_post']; } if (isset($_POST['uid_post'])) { $uid_post=$_POST['uid_post']; } } $uid = md5(uniqid(microtime(), 1)); // on remplace les %20 par des espaces $uid_post = preg_replace('/%20/',' ',$uid_post); if($uid_post===$_SESSION['uid_prime']) { $valide_form = 'oui'; } else { $valide_form = 'non'; } $_SESSION['uid_prime'] = $uid; // fin de la fonction de sécurité // fin pour module trombinoscope $auth_sso=getSettingValue("auth_sso") ? getSettingValue("auth_sso") : ""; $gepi_non_plugin_lcs_mais_recherche_ldap=false; if((getSettingAOui('gepi_non_plugin_lcs_mais_recherche_ldap'))&&(file_exists("../secure/config_ldap.inc.php"))) { include("../secure/config_ldap.inc.php"); $lcs_ldap_base_dn=$ldap_base_dn; $lcs_ldap_host=$ldap_host; $lcs_ldap_port=$ldap_port; $gepi_non_plugin_lcs_mais_recherche_ldap=true; $lcs_ldap_people_dn = 'ou=people,'.$lcs_ldap_base_dn; $lcs_ldap_groups_dn = 'ou=groups,'.$lcs_ldap_base_dn; } if (isset($_POST['valid']) and ($_POST['valid'] == "yes")) { check_token(); //------------------------------------------------------ //--- Partie retirée par Thomas Belliard // Cas LCS : on teste s'il s'agit d'un utilisateur local ou non // if (getSettingValue("use_sso") == "lcs"){ // if ($_POST['is_lcs'] == "y") { // $is_pwd = 'n'; // } // else { // $is_pwd = 'y'; // } // }elseif(getSettingValue("use_sso") == 'cas'){ // // $is_pwd = 'n'; // // } // else { // $is_pwd = "y"; // } //------------------------------------------------------ // On teste si on doit enregistrer un mot de passe ou non : if ($_POST['reg_auth_mode'] == "gepi" || $gepiSettings['ldap_write_access'] == "yes") { $is_pwd = "y"; } else { $is_pwd = "n"; } if ($_POST['reg_nom'] == '') { $msg.="Veuillez entrer un nom pour l'utilisateur !"; } else { $k = 0; while ($k < $_POST['max_mat']) { $temp = "matiere_".$k; $reg_matiere[$k] = $_POST[$temp]; $k++; } // // actions si un nouvel utilisateur a été défini // $temoin_ajout_ou_modif_ok="n"; if ((isset($_POST['new_login'])) and ($_POST['new_login']!='') and (preg_match("/^[a-zA-Z_]{1}[a-zA-Z0-9_.]{0,".($longmax_login-1)."}$/", $_POST['new_login'])) ) { // Modif Thomas : essayons d'accepter des logins sensibles à la casse, pour mieux s'adapter aux sources externes (LDAP). //$_POST['new_login'] = strtoupper($_POST['new_login']); $reg_password_c = md5($NON_PROTECT['password1']); $resultat = ""; if (($_POST['no_anti_inject_password1'] != $_POST['reg_password2']) and ($is_pwd == "y")) { $msg.="Erreur lors de la saisie : les deux mots de passe ne sont pas identiques, veuillez recommencer !"; } else if ((!(verif_mot_de_passe($_POST['no_anti_inject_password1'],0))) and ($is_pwd == "y")) { $msg.="Erreur lors de la saisie du mot de passe (voir les recommandations), veuillez recommencer !"; if((isset($info_verif_mot_de_passe))&&($info_verif_mot_de_passe!="")) {$msg.="
".$info_verif_mot_de_passe;} } else { // Le teste suivant détecte si un utilisateur existe avec le même login (insensible à la casse) $test = mysqli_query($GLOBALS["mysqli"], "SELECT login FROM utilisateurs WHERE (login = '".$_POST['new_login']."' OR login = '".strtoupper($_POST['new_login'])."')"); $nombreligne = mysqli_num_rows($test); if ($nombreligne != 0) { $resultat = "NON"; $msg.="*** Attention ! Un utilisateur ayant le même identifiant existe déjà. Enregistrement impossible ! ***"; } if ($resultat != "NON") { // On enregistre l'utilisateur // Si on a activé l'accès LDAP en écriture, on commence par ça. // En cas d'échec, l'enregistrement ne sera pas poursuivi. // On ne continue que si le LDAP est configuré en écriture, qu'on a activé // l'auth LDAP ou SSO, et que c'est un de ces deux modes qui a été choisi pour cet utilisateur. if (LDAPServer::is_setup() && $gepiSettings["ldap_write_access"] == "yes" && ($session_gepi->auth_ldap || $session_gepi->auth_sso) && ($_POST['reg_auth_mode'] == 'ldap' || $_POST['reg_auth_mode'] == 'sso')) { $write_ldap = true; $write_ldap_success = false; // On tente de créer l'utilisateur sur l'annuaire LDAP $ldap_server = new LDAPServer(); if ($ldap_server->test_user($_POST['new_login'])) { // L'utilisateur a été trouvé dans l'annuaire. On ne l'enregistre pas. $write_ldap_success = true; $msg.= "L'utilisateur n'a pas pu être ajouté à l'annuaire LDAP, car il y est déjà présent. Il va néanmoins être créé dans la base Gepi."; } else { $write_ldap_success = $ldap_server->add_user($_POST['new_login'], $_POST['reg_nom'], $_POST['reg_prenom'], $_POST['reg_email'], $_POST['reg_civilite'], $NON_PROTECT['password1'], $_POST['reg_statut']); } } else { $write_ldap = false; } $sql_ajout_chaine_numind_et_type=""; if((isset($_POST['reg_numind']))&&($_POST['reg_numind']!="")) { $reg_numind=preg_replace("/[^0-9]/","",trim($_POST['reg_numind'])); if($_POST['reg_statut']=="professeur") { $reg_numind="P".$reg_numind; } $sql="SELECT 1=1 FROM utilisateurs WHERE numind='".$reg_numind."' AND login!='".$_POST['new_login']."';"; $test=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test)==0) { $sql_ajout_chaine_numind_et_type.=", numind='".$reg_numind."'"; } else { $msg.="Identifiant STS déjà attribué à un autre utilisateur.
"; } } if((isset($_POST['reg_type']))&&(in_array($_POST['reg_type'], array('epp', 'local')))) { $sql_ajout_chaine_numind_et_type.=", type='".$_POST['reg_type']."'"; } # On poursuit si le LDAP s'est bien passé (ou bien si on n'avait rien à faire avec...) if (!$write_ldap or ($write_ldap && $write_ldap_success)) { // Ensuite, on enregistre dans la base, en distinguant selon le type d'authentification. if ($_POST['reg_auth_mode'] == "gepi") { // On enregistre le mot de passe $sql="INSERT INTO utilisateurs SET nom='".$_POST['reg_nom']."',prenom='".$_POST['reg_prenom']."',civilite='".$_POST['reg_civilite']."',login='".$_POST['new_login']."',password='$reg_password_c',statut='".$_POST['reg_statut']."',email='".$_POST['reg_email']."', auth_mode = '".$_POST['reg_auth_mode']."',etat='actif', change_mdp='y'"; } else { // Auth LDAP ou SSO, pas de mot de passe. $sql="INSERT INTO utilisateurs SET nom='".$_POST['reg_nom']."',prenom='".$_POST['reg_prenom']."',civilite='".$_POST['reg_civilite']."',login='".$_POST['new_login']."',password='',statut='".$_POST['reg_statut']."',email='".$_POST['reg_email']."', auth_mode = '".$_POST['reg_auth_mode']."',etat='actif', change_mdp='n'"; } $sql.=$sql_ajout_chaine_numind_et_type; $reg_data = mysqli_query($GLOBALS["mysqli"], $sql); if ($_POST['reg_statut'] == "professeur") { $del = mysqli_query($GLOBALS["mysqli"], "DELETE FROM j_professeurs_matieres WHERE id_professeur = '".$_POST['new_login']."'"); $m = 0; while ($m < $_POST['max_mat']) { if ($reg_matiere[$m] != '') { $test = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM j_professeurs_matieres WHERE (id_professeur = '".$_POST['new_login']."' and id_matiere = '$reg_matiere[$m]')"); $resultat = mysqli_num_rows($test); if ($resultat == 0) { $reg = mysqli_query($GLOBALS["mysqli"], "INSERT INTO j_professeurs_matieres SET id_professeur = '".$_POST['new_login']."', id_matiere = '$reg_matiere[$m]', ordre_matieres = '0'"); } } $reg_matiere[$m] = ''; $m++; } } $msg.="Vous venez de créer un nouvel utilisateur !
Par défaut, cet utilisateur est considéré comme actif."; //$msg = $msg."
Pour imprimer les paramètres de l'utilisateur (identifiant, mot de passe, ...), cliquez ici !"; $msg.="
Pour imprimer les paramètres de l'utilisateur (identifiant, mot de passe, ...), cliquez ici !"; $msg.="
Attention : ultérieurement, il vous sera impossible d'imprimer à nouveau le mot de passe d'un utilisateur ! "; $user_login = $_POST['new_login']; $temoin_ajout_ou_modif_ok="y"; } if((getSettingAOui('sso_cas_table'))&&(isset($_POST['login_sso']))) { $enregistrer_sso_corresp="y"; if($_POST['login_sso']!="") { $sql="SELECT login_gepi FROM sso_table_correspondance WHERE login_sso='".$_POST['login_sso']."' AND login_gepi!='".$_POST['new_login']."';"; $res_sso=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_sso)>0) { $lig_sso=mysqli_fetch_object($res_sso); $sql="SELECT * FROM utilisateurs WHERE login='".$lig_sso->login_gepi."';"; $test_user=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test_user)>0) { $lig_user=mysqli_fetch_object($test_user); $msg.="ANOMALIE : La correspondance SSO proposée ".$_POST['login_sso']." est déjà attribuée "; if($lig_user->statut=="eleve") { $msg.=" à l'élève ".$lig_sso->login_gepi.""; } elseif($lig_user->statut=="responsable") { $msg.=" au responsable ".$lig_sso->login_gepi.""; } else { $msg.=" au personnel ".$lig_sso->login_gepi.""; } $msg.="
Vous devriez faire le ménage pour ne conserver qu'une seule association.
"; $enregistrer_sso_corresp="n"; } else { $sql="DELETE FROM sso_table_correspondance WHERE login_gepi='".$lig_sso->login_gepi."';"; $menage=mysqli_query($GLOBALS["mysqli"], $sql); $msg.="Suppression d'une scorie :
La correspondance SSO proposée ".$_POST['login_sso']." était associée au login ".$lig_sso->login_gepi." qui n'existe plus dans la table 'utilisateurs'.
"; } } } if($enregistrer_sso_corresp=="y") { $sql="SELECT login_sso FROM sso_table_correspondance WHERE login_gepi='".$_POST['new_login']."';"; $res_sso=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_sso)>0) { $lig_sso=mysqli_fetch_object($res_sso); if($lig_sso->login_sso!=$_POST['login_sso']) { $sql="UPDATE sso_table_correspondance SET login_sso='".$_POST['login_sso']."' WHERE login_gepi='".$_POST['new_login']."';"; $update=mysqli_query($GLOBALS["mysqli"], $sql); if(!$update) { $msg.="Erreur lors de la mise à jour de la correspondance SSO.
"; } } } else { $sql="INSERT INTO sso_table_correspondance SET login_sso='".$_POST['login_sso']."', login_gepi='".$_POST['new_login']."';"; $insert=mysqli_query($GLOBALS["mysqli"], $sql); if(!$insert) { $msg.="Erreur lors de l'enregistrement de la correspondance SSO.
"; } } } } } } if($temoin_ajout_ou_modif_ok=="y") { if ($_POST['reg_statut']=='scolarite'){ $sql="SELECT c.id FROM classes c;"; $res_liste_classes=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_liste_classes)>0){ while($ligtmp=mysqli_fetch_object($res_liste_classes)) { $sql="INSERT INTO j_scol_classes SET id_classe='$ligtmp->id', login='".$_POST['new_login']."';"; $insert=mysqli_query($GLOBALS["mysqli"], $sql); if(!$insert){ $msg.="
Erreur lors de l'association avec la classe ".get_class_from_id($ligtmp->id); } } } } } } // //action s'il s'agit d'une modification // else if ((isset($user_login)) and ($user_login!='')) { // On regarde quel est le format du login, majuscule ou minuscule... $test = sql_count(sql_query("SELECT login FROM utilisateurs WHERE (login = '".$user_login."')")); if ($test == "0") $user_login = strtoupper($user_login); if (isset($_POST['deverrouillage'])) { $reg_data = sql_query("UPDATE utilisateurs SET date_verrouillage=now() - interval " . getSettingValue("temps_compte_verrouille") . " minute WHERE (login='".$user_login."')"); } // Si on change le mode d'authentification, il faut quelques opérations particulières $old_auth_mode = old_mysql_result(mysqli_query($GLOBALS["mysqli"], "SELECT auth_mode FROM utilisateurs WHERE login = '".$user_login."'"), 0); if ($old_auth_mode == "gepi" && ($_POST['reg_auth_mode'] == "ldap" || $_POST['reg_auth_mode'] == "sso")) { // On passe du mode Gepi à un mode externe : il faut supprimer le mot de passe $oldmd5password = old_mysql_result(mysqli_query($GLOBALS["mysqli"], "SELECT password FROM utilisateurs WHERE login = '".$user_login."'"), 0); // 20140301 if(!getSettingAOui('auth_sso_ne_pas_vider_MDP_gepi')) { mysqli_query($GLOBALS["mysqli"], "UPDATE utilisateurs SET password = '', salt = '' WHERE login = '".$user_login."'"); } $msg.="Passage à un mode d'authentification externe : "; // Et si on a un accès en écriture au LDAP, il faut créer l'utilisateur ! if ($gepiSettings['ldap_write_access'] == "yes") { $create_ldap_user = true; $msg .= "le mot de passe de l'utilisateur est inchangé.
"; } else { if(!getSettingAOui('auth_sso_ne_pas_vider_MDP_gepi')) { $msg .= "le mot de passe de l'utilisateur a été effacé.
"; } else { $msg .= "le mot de passe de l'utilisateur a été conservé.
"; } } } elseif (($old_auth_mode == "sso" || $old_auth_mode == "ldap") && $_POST['reg_auth_mode'] == "gepi") { // On passe d'un mode externe à un mode Gepi. On prévient l'admin qu'il faut modifier le mot de passe. $msg = "Passage d'un mode d'authentification externe à un mode local : le mot de passe de l'utilisateur *doit* être réinitialisé.
"; // Et si accès en écriture au LDAP, on supprime le compte. if ($gepiSettings['ldap_write_access'] == "yes" && (!isset($_POST['prevent_ldap_removal']) or $_POST['prevent_ldap_removal'] != "yes")) { $delete_ldap_user = true; } } $change = "yes"; $flag = ''; if ($_POST['reg_statut'] != "professeur") { $test = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM j_groupes_professeurs WHERE (login='".$user_login."')"); $nb = mysqli_num_rows($test); if ($nb != 0) { $msg.="Impossible de changer le statut. Cet utilisateur est actuellement professeur dans certaines classes !"; $change = "no"; } else { $k = 0; while ($k < $_POST['max_mat']) { $reg_matiere[$k] = ''; $k++; } } } if ($_POST['reg_statut'] == "professeur") { //$test = mysql_query("SELECT jgm.id_matiere FROM j_groupes_professeurs jgp, j_groupes_matieres jgm WHERE (" . $test = mysqli_query($GLOBALS["mysqli"], "SELECT DISTINCT(jgm.id_matiere) FROM j_groupes_professeurs jgp, j_groupes_matieres jgm WHERE (" . "jgp.login = '".$user_login."' and " . "jgm.id_groupe = jgp.id_groupe)"); $nb = mysqli_num_rows($test); if ($nb != 0) { $k = 0; $change = "yes"; while ($k < $nb) { // =============== // Pour chaque matière associée au prof, on réinitialise le témoin: $flag="no"; // =============== $id_matiere = old_mysql_result($test, $k, 'id_matiere'); //echo "\$k=$k
"; //echo "\$id_matiere=$id_matiere
"; $m = 0; while ($m < $_POST['max_mat']) { //echo "\$m=$m - \$id_matiere=$id_matiere - \$reg_matiere[$m]=$reg_matiere[$m]"; if ($id_matiere == $reg_matiere[$m]) { $flag = "yes"; } //if(isset($flag)){echo " \$flag=$flag";} //echo "
"; $m++; } if ($flag != "yes") { $change = "no"; } $k++; } if ($change == "no") { $msg.="Impossible de changer les matières. Cet utilisateur est actuellement professeur dans certaines classes des matières que vous voulez supprimer !"; } } } if ($change == "yes") { // Variable utilisée pour la partie photo: $temoin_ajout_ou_modif_ok="y"; $sql="SELECT statut FROM utilisateurs WHERE login='$user_login';"; $res_statut_user=mysqli_query($GLOBALS["mysqli"], $sql); $lig_tmp=mysqli_fetch_object($res_statut_user); // Si l'utilisateur était CPE, il faut supprimer les associations dans la table j_eleves_cpe if($lig_tmp->statut=="cpe"){ if($_POST['reg_statut']!="cpe"){ $sql="DELETE FROM j_eleves_cpe WHERE cpe_login='$user_login';"; $nettoyage=mysqli_query($GLOBALS["mysqli"], $sql); } } // Si l'utilisateur était SCOLARITE, il faut supprimer les associations dans la table j_scol_classes if($lig_tmp->statut=="scolarite"){ if($_POST['reg_statut']!="scolarite"){ $sql="DELETE FROM j_scol_classes WHERE login='$user_login';"; $nettoyage=mysqli_query($GLOBALS["mysqli"], $sql); } } // On effectue les opérations LDAP if (isset($create_ldap_user) && $create_ldap_user) { $ldap_server = new LDAPServer; if ($ldap_server->test_user($user_login)) { // L'utilisateur a été trouvé dans l'annuaire. On ne l'enregistre pas. $write_ldap_success = true; $msg.= "L'utilisateur n'a pas pu être ajouté à l'annuaire LDAP, car il y est déjà présent.
"; } else { $write_ldap_success = $ldap_server->add_user($user_login, $_POST['reg_nom'], $_POST['reg_prenom'], $_POST['reg_email'], $_POST['reg_civilite'], md5(rand()), $_POST['reg_statut']); // On transfert le mot de passe à la main $ldap_server->set_manual_password($user_login, "{MD5}".base64_encode(pack("H*",$oldmd5password))); } } if (isset($delete_ldap_user) && $delete_ldap_user) { $ldap_server = new LDAPServer; if (!$ldap_server->test_user($user_login)) { // L'utilisateur n'a pas été trouvé dans l'annuaire. $write_ldap_success = true; } else { $write_ldap_success = $ldap_server->delete_user($user_login); } } $sql_ajout_chaine_numind_et_type=""; if(isset($_POST['reg_numind'])) { if($_POST['reg_numind']!="") { $reg_numind=preg_replace("/[^0-9]/","",trim($_POST['reg_numind'])); if($_POST['reg_statut']=="professeur") { $reg_numind="P".$reg_numind; } $sql="SELECT 1=1 FROM utilisateurs WHERE numind='".$reg_numind."' AND login!='".$user_login."';"; $test=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test)==0) { $sql_ajout_chaine_numind_et_type.=", numind='".$reg_numind."'"; } else { $msg.="Identifiant STS déjà attribué à un autre utilisateur.
"; } } else { $sql="UPDATE utilisateurs SET numind='' WHERE login='".$user_login."';"; $update=mysqli_query($GLOBALS["mysqli"], $sql); if(!$update) { $msg.="Erreur lors de la suppression de l'identifiant STS.
"; } } } if((isset($_POST['reg_type']))&&(in_array($_POST['reg_type'], array('epp', 'local')))) { $sql_ajout_chaine_numind_et_type.=", type='".$_POST['reg_type']."'"; } $reg_data = mysqli_query($GLOBALS["mysqli"], "UPDATE utilisateurs SET nom='".$_POST['reg_nom']."',prenom='".$_POST['reg_prenom']."',civilite='".$_POST['reg_civilite']."', login='".$_POST['reg_login']."',statut='".$_POST['reg_statut']."',email='".$_POST['reg_email']."',etat='".$_POST['reg_etat']."',auth_mode='".$_POST['reg_auth_mode']."'".$sql_ajout_chaine_numind_et_type." WHERE login='".$user_login."'"); $del = mysqli_query($GLOBALS["mysqli"], "DELETE FROM j_professeurs_matieres WHERE id_professeur = '".$user_login."'"); $m = 0; while ($m < $_POST['max_mat']) { $num=$m+1; if ($reg_matiere[$m] != '') { $test = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM j_professeurs_matieres WHERE (id_professeur = '".$user_login."' and id_matiere = '$reg_matiere[$m]')"); $resultat = mysqli_num_rows($test); if ($resultat == 0) { $reg = mysqli_query($GLOBALS["mysqli"], "INSERT INTO j_professeurs_matieres SET id_professeur = '".$user_login."', id_matiere = '$reg_matiere[$m]', ordre_matieres = '$num'"); } $reg_matiere[$m] = ''; } $m++; } if (!$reg_data) { $msg.="Erreur lors de l'enregistrement des données.
"; } else { $msg.="Les modifications ont bien été enregistrées !
"; } if((getSettingAOui('sso_cas_table'))&&(isset($_POST['login_sso']))) { $enregistrer_sso_corresp="y"; if($_POST['login_sso']!="") { $sql="SELECT login_gepi FROM sso_table_correspondance WHERE login_sso='".$_POST['login_sso']."' AND login_gepi!='$user_login';"; $res_sso=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_sso)>0) { $lig_sso=mysqli_fetch_object($res_sso); $sql="SELECT * FROM utilisateurs WHERE login='".$lig_sso->login_gepi."';"; $test_user=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($test_user)>0) { $lig_user=mysqli_fetch_object($test_user); $msg.="ANOMALIE : La correspondance SSO proposée ".$_POST['login_sso']." est déjà attribuée "; if($lig_user->statut=="eleve") { $msg.=" à l'élève ".$lig_sso->login_gepi.""; } elseif($lig_user->statut=="responsable") { $msg.=" au responsable ".$lig_sso->login_gepi.""; } else { $msg.=" au personnel ".$lig_sso->login_gepi.""; } $msg.="
Vous devriez faire le ménage pour ne conserver qu'une seule association.
"; $enregistrer_sso_corresp="n"; } else { $sql="DELETE FROM sso_table_correspondance WHERE login_gepi='".$lig_sso->login_gepi."';"; $menage=mysqli_query($GLOBALS["mysqli"], $sql); $msg.="Suppression d'une scorie :
La correspondance SSO proposée ".$_POST['login_sso']." était associée au login ".$lig_sso->login_gepi." qui n'existe plus dans la table 'utilisateurs'.
"; } } } if($enregistrer_sso_corresp=="y") { $sql="SELECT login_sso FROM sso_table_correspondance WHERE login_gepi='$user_login';"; $res_sso=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_sso)>0) { $lig_sso=mysqli_fetch_object($res_sso); if($lig_sso->login_sso!=$_POST['login_sso']) { $sql="UPDATE sso_table_correspondance SET login_sso='".$_POST['login_sso']."' WHERE login_gepi='$user_login';"; $update=mysqli_query($GLOBALS["mysqli"], $sql); if(!$update) { $msg.="Erreur lors de la mise à jour de la correspondance SSO.
"; } } } else { $sql="INSERT INTO sso_table_correspondance SET login_sso='".$_POST['login_sso']."', login_gepi='$user_login';"; $insert=mysqli_query($GLOBALS["mysqli"], $sql); if(!$insert) { $msg.="Erreur lors de l'enregistrement de la correspondance SSO.
"; } } } } } } // elseif... else { if (mb_strlen($_POST['new_login']) > $longmax_login) { $msg.="L'identifiant est trop long, il ne doit pas dépasser ".$longmax_login." caractères."; } else { $msg.="L'identifiant de l'utilisateur doit être constitué uniquement de lettres et de chiffres !"; } } if($temoin_ajout_ou_modif_ok=="y"){ // pour le module trombinoscope // Envoi de la photo $i_photo = 0; $calldata_photo = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM utilisateurs WHERE (login = '".$user_login."')"); // En multisite, on ajoute le répertoire RNE if (isset($GLOBALS['multisite']) AND $GLOBALS['multisite'] == 'y') { // On récupère le RNE de l'établissement $repertoire="../photos/".$_COOKIE['RNE']."/personnels/"; }else{ $repertoire="../photos/personnels/"; } //$repertoire = '../photos/personnels/'; $code_photo = md5(mb_strtolower($user_login)); if(isset($_POST['suppr_filephoto']) and $valide_form === 'oui' ){ if($_POST['suppr_filephoto']=='y'){ if(unlink($repertoire.$code_photo.".jpg")){ $msg.="La photo ".$repertoire.$code_photo.".jpg a été supprimée. "; } else{ $msg.="Echec de la suppression de la photo ".$repertoire.$code_photo.".jpg "; } } } // filephoto if(isset($_FILES['filephoto']['tmp_name'])){ $filephoto_tmp=$_FILES['filephoto']['tmp_name']; if ( $filephoto_tmp != '' and $valide_form === 'oui' ){ $filephoto_name=$_FILES['filephoto']['name']; $filephoto_size=$_FILES['filephoto']['size']; $filephoto_type=$_FILES['filephoto']['type']; // Tester la taille max de la photo? if ((preg_match('/jpg$/',strtolower($filephoto_name)) || preg_match('/jpeg$/',strtolower($filephoto_name))) && ($filephoto_type == "image/jpeg" || $filephoto_type == "image/pjpeg")) { if(is_uploaded_file($filephoto_tmp)){ $dest_file = $repertoire.$code_photo.".jpg"; $source_file = $filephoto_tmp; $res_copy=copy("$source_file" , "$dest_file"); if($res_copy){ $msg.="Mise en place de la photo effectuée."; if (getSettingValue("active_module_trombinoscopes_rd")=='y') { // si le redimensionnement des photos est activé on redimensionne if (getSettingValue("active_module_trombinoscopes_rt")!='') $redim_OK=redim_photo($dest_file,getSettingValue("l_resize_trombinoscopes"), getSettingValue("h_resize_trombinoscopes"),getSettingValue("active_module_trombinoscopes_rt")); else $redim_OK=redim_photo($dest_file,getSettingValue("l_resize_trombinoscopes"), getSettingValue("h_resize_trombinoscopes")); if (!$redim_OK) $msg.=" Echec du redimensionnement de la photo."; } } else{ $msg.="Erreur lors de la mise en place de la photo."; } } else{ $msg.="Erreur lors de l'upload de la photo."; } } else { $msg.="Erreur : seuls les fichiers ayant l'extension .jpg ou .jpeg sont autorisés."; } } } // si suppression de la fiche il faut supprimer la photo // fin pour le module trombinoscope } } } elseif(isset($_POST['suppression_assoc_user_groupes'])) { check_token(); $user_group=isset($_POST["user_group"]) ? $_POST["user_group"] : array(); $call_classes = mysqli_query($GLOBALS["mysqli"], "SELECT g.id group_id, g.name name, c.classe classe, c.id classe_id " . "FROM j_groupes_professeurs jgp, j_groupes_classes jgc, groupes g, classes c WHERE (" . "jgp.login = '$user_login' and " . "g.id = jgp.id_groupe and " . "jgc.id_groupe = jgp.id_groupe and " . "c.id = jgc.id_classe) order by jgc.id_classe"); $nb_classes = mysqli_num_rows($call_classes); if($nb_classes>0) { $k = 0; $user_classe=array(); while ($k < $nb_classes) { $user_classe['classe_nom_court'] = old_mysql_result($call_classes, $k, "classe"); $user_classe['matiere_nom_court'] = old_mysql_result($call_classes, $k, "name"); $user_classe['classe_id'] = old_mysql_result($call_classes, $k, "classe_id"); $user_classe['group_id'] = old_mysql_result($call_classes, $k, "group_id"); if(!in_array($user_classe['group_id'],$user_group)) { $sql="DELETE FROM j_groupes_professeurs WHERE id_groupe='".$user_classe['group_id']."' AND login='$user_login';"; //echo "$sql
\n"; $suppr=mysqli_query($GLOBALS["mysqli"], $sql); if($suppr) { $msg.="Suppression de l'association avec l'enseignement ".$user_classe['matiere_nom_court']." en ".$user_classe['classe_nom_court']."
\n"; } else { $msg.="ERREUR lors de la suppression de l'association avec l'enseignement ".$user_classe['matiere_nom_court']." en ".$user_classe['classe_nom_court']."
\n"; } } $k++; } unset($user_classe); } } // On appelle les informations de l'utilisateur pour les afficher : if (isset($user_login) and ($user_login!='')) { $call_user_info = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM utilisateurs WHERE login='".$user_login."'"); $user_auth_mode = old_mysql_result($call_user_info, "0", "auth_mode"); $user_nom = old_mysql_result($call_user_info, "0", "nom"); $user_prenom = old_mysql_result($call_user_info, "0", "prenom"); $user_civilite = old_mysql_result($call_user_info, "0", "civilite"); $user_statut = old_mysql_result($call_user_info, "0", "statut"); $user_email = old_mysql_result($call_user_info, "0", "email"); $user_etat = old_mysql_result($call_user_info, "0", "etat"); $date_verrouillage = old_mysql_result($call_user_info, "0", "date_verrouillage"); $user_numind = old_mysql_result($call_user_info, "0", "numind"); $user_type = old_mysql_result($call_user_info, "0", "type"); $call_matieres = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM j_professeurs_matieres j WHERE j.id_professeur = '".$user_login."' ORDER BY ordre_matieres"); $nb_mat = mysqli_num_rows($call_matieres); $k = 0; while ($k < $nb_mat) { $user_matiere[$k] = old_mysql_result($call_matieres, $k, "id_matiere"); $k++; } // Utilisateurs précédent/suivant: $utilisateur_courant_trouve="n"; //$sql="SELECT login,nom,prenom FROM utilisateurs WHERE statut='$user_statut' ORDER BY nom,prenom"; //$sql="SELECT login,nom,prenom,statut FROM utilisateurs WHERE statut='$user_statut' AND etat='actif' ORDER BY statut, nom,prenom"; $sql="SELECT login,nom,prenom,statut FROM utilisateurs WHERE etat='actif' AND (statut='administrateur' OR statut='professeur' OR statut='cpe' OR statut='scolarite' OR statut='autre' OR statut='secours') ORDER BY statut, nom,prenom"; $res_liste_user=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_liste_user)>0){ $login_user_prec=""; $login_user_suiv=""; $temoin_tmp=0; $liste_options_user=""; $statut_prec=""; while($lig_user_tmp=mysqli_fetch_object($res_liste_user)){ if($lig_user_tmp->statut!=$statut_prec) { if($statut_prec!="") { $liste_options_user.="\n"; } $liste_options_user.="\n"; $statut_prec=$lig_user_tmp->statut; } if("$lig_user_tmp->login"=="$user_login"){ $liste_options_user.="\n"; $utilisateur_courant_trouve="y"; $temoin_tmp=1; if($lig_user_tmp=mysqli_fetch_object($res_liste_user)){ $login_user_suiv=$lig_user_tmp->login; $liste_options_user.="\n"; } else{ $login_user_suiv=""; } } else{ $liste_options_user.="\n"; } if($temoin_tmp==0){ $login_user_prec=$lig_user_tmp->login; } } $liste_options_user.="\n"; // Si on désactive un compte, il n'est plus dans la liste SELECT if($utilisateur_courant_trouve=="n") { $liste_options_user="\n".$liste_options_user; } } } else { $nb_mat = 0; if (isset($_POST['reg_civilite'])) $user_civilite = $_POST['reg_civilite']; else $user_civilite = 'M.'; $user_auth_mode = isset($_POST['reg_auth_mode']) ? $_POST['reg_auth_mode'] : "gepi"; if (isset($_POST['reg_nom'])) $user_nom = $_POST['reg_nom']; if (isset($_POST['reg_prenom'])) $user_prenom = $_POST['reg_prenom']; if (isset($_POST['reg_statut'])) $user_statut = $_POST['reg_statut']; if (isset($_POST['reg_email'])) $user_email = $_POST['reg_email']; if (isset($_POST['reg_etat'])) $user_etat = $_POST['reg_etat']; if (isset($_POST['reg_numind'])) $user_numind = $_POST['reg_numind']; if (isset($_POST['reg_type'])) $user_type = $_POST['reg_type']; if ((isset($_POST['matiere_0']))&&($_POST['matiere_0']!='')) { $user_matiere[0]=$_POST['matiere_0']; } } $avec_js_et_css_edt="y"; $themessage = 'Des informations ont été modifiées. Voulez-vous vraiment quitter sans enregistrer ?'; $themessage2 = "Êtes-vous sûr de vouloir effectuer cette opération ?\\n Actuellement cet utilisateur se connecte à GEPI en s\'authentifiant auprès d\'un SSO.\\n En attribuant un mot de passe, vous lancerez la procédure, qui génèrera un mot de passe local. Cet utilisateur ne pourra donc plus se connecter à GEPI via le SSO mais uniquement localement."; //**************** EN-TETE ***************** //$titre_page = "Gestion des utilisateurs | Modifier un utilisateur"; $titre_page = "Création/modification d'un personnel"; require_once("../lib/header.inc.php"); //**************** FIN EN-TETE ***************** //debug_var(); ?> "; //echo "\$login_user_suiv=$login_user_suiv
"; //============================================================================================================ // Div pour l'affichage de l'EDT if((getSettingAOui('autorise_edt_tous'))|| ((getSettingAOui('autorise_edt_admin'))&&($_SESSION['statut']=='administrateur'))) { $titre_infobulle="EDT de "; $texte_infobulle=""; $tabdiv_infobulle[]=creer_div_infobulle('edt_prof',$titre_infobulle,"",$texte_infobulle,"",40,0,'y','y','n','n'); //https://127.0.0.1/steph/gepi_git_trunk/edt_organisation/index_edt.php?login_edt=boireaus&type_edt_2=prof&no_entete=y&no_menu=y&lien_refermer=y function affiche_lien_edt_prof($login_prof, $info_prof) { return " EDT"; } echo " \n"; } else { function affiche_lien_edt_prof($login_prof, $info_prof) { return ""; } } //============================================================================================================ echo "
\n"; echo "

"; echo "Retour Retour | Aide"; // dans le cas de LCS, existence d'utilisateurs locaux repérés grâce au champ password non vide. $testpassword = sql_query1("select password from utilisateurs where login = '".$user_login."'"); if ($testpassword == -1) $testpassword = ''; if (isset($user_login) and ($user_login!='')) { if ((getSettingValue('use_sso') != "cas" and getSettingValue("use_sso") != "lemon" and ((getSettingValue("use_sso") != "lcs") or ($testpassword !='')) and getSettingValue("use_sso") != "ldap_scribe") OR $block_sso) { echo " | Changer le mot de passe\n"; } else if (getSettingValue('use_sso') == "lcs") { echo " | Attribuer un mot de passe\n"; } echo " | Ajouter un nouvel utilisateur\n"; if((isset($user_statut))&&($user_statut=="professeur")) { echo " | Créer un remplaçant\n"; } } if(isset($liste_options_user)){ if("$liste_options_user"!=""){ if("$login_user_prec"!=""){echo " | Précédent\n";} //echo " | \n"; echo $liste_options_user; echo "\n"; if("$login_user_suiv"!=""){echo " | Suivant\n";} } } echo "

\n"; echo "\n"; echo "
\n"; $ldap_write_access = getSettingValue("ldap_write_access") == "yes" ? true : false; if (!LDAPServer::is_setup()) {$ldap_write_access = false;} if ($ldap_write_access) { echo "

Attention ! Un accès LDAP en écriture a été défini. En conséquence, toute modification effectuée sur un utilisateur ayant pour mode d'authentification LDAP ou SSO sera répercutée sur le LDAP (cela inclut la création du mot de passe, pour les nouveaux utilisateurs). Si l'utilisateur existe déjà dans l'annuaire LDAP, ses informations ne seront pas mises à jour dans l'annuaire mais il sera tout de même créé dans la base Gepi. En cas de modification d'un utilisateur existant à la fois dans l'annuaire et dans Gepi, les modifications seront répercutées sur l'annuaire LDAP.

"; } ?>
Informations utilisateur Journal des connexions\n"; } ?>
Identifiant " . $longmax_login . " caractères maximum) ";?>: ".$user_login."\n"; echo "\n"; } else { echo "\n"; } if (!$session_gepi->auth_ldap || !$session_gepi->auth_sso) { $remarque = "

Note : "; if (!$session_gepi->auth_ldap && !$session_gepi->auth_sso) { $remarque .= "les modes d'authentification LDAP et SSO sont actuellement inactifs. Si vous choisissez l'un de ces modes, l'utilisateur ne disposera d'aucun moyen de s'authentifier dans Gepi.

"; } else { $remarque .= "l'authentification "; if (!$session_gepi->auth_ldap) { $remarque .= "LDAP "; } else { $remarque .= "SSO "; } $remarque .= "est actuellement inactive. Si vous choisissez ce mode d'authentification, l'utilisateur ne disposera d'aucun moyen de s'authentifier dans Gepi.

"; } echo $remarque; } if (($_SESSION['statut']=='administrateur') and (isset($user_login)) and ($user_login!='')) { echo "
\n"; echo affiche_actions_compte($user_login, '_blank'); echo "
\n"; echo affiche_reinit_password($user_login); echo "
\n"; } if(($auth_sso=='lcs')||($gepi_non_plugin_lcs_mais_recherche_ldap)) { echo "\n"; } ?> \n"; echo "\n"; //echo "
\n"; echo "\n"; echo "
\n"; } echo "
\n"; echo "\n"; echo "\n"; if($temoin_photo=="oui"){ echo "Modifier le fichier photo\n"; } else{ echo "Envoyer un fichier photo\n"; } } else{ echo "
"; } if ($ldap_write_access) { echo " "; } ?>
Authentification :
Correspondance SSO :
"; echo "

Ne pas supprimer du LDAP
(si cette case est décochée et que vous passez d'un mode d'authentification LDAP ou SSO à un mode d'authentification locale, l'utilisateur sera supprimé de l'annuaire LDAP).

"; echo "
Nom :"; echo " \n"; } else { echo " />"; } ?>
Prénom : />
Civilité :
Email : onchange="changement()" />
\n"; echo "
\n"; $temoin_photo="non"; if(file_exists($photo)){ $temoin_photo="oui"; //echo "\n"; echo "
\n"; // la photo sera réduite si nécessaire $dimphoto=dimensions_affichage_photo($photo,getSettingValue('l_max_aff_trombinoscopes'),getSettingValue('h_max_aff_trombinoscopes')); echo ''; //echo "
\n"; echo "\n"; echo "
\n"; $temoin_photo="non"; echo "
\n"; echo "\n"; echo "\n"; echo "Envoyer un fichier photo\n"; } ?>
\n"; echo "\n"; echo "\n"; // fin trombinoscope ?> "; echo "\n"; echo "
Mot de passe (".getSettingValue("longmin_pwd") ." caractères minimum) :
Mot de passe (à confirmer) :
\n"; echo "
Attention : le mot de passe doit comporter ".getSettingValue("longmin_pwd")." caractères minimum et doit être composé à la fois de lettres et de chiffres.\n"; echo "
Remarque : lors de la création d'un utilisateur, il est recommandé de choisir le NUMEN comme mot de passe.
\n"; echo "\n"; echo "
"; } ?>
Statut (consulter l'aide) : 0) { $lig_statut_personnalise=mysqli_fetch_object($res_statut_personnalise); echo " (".$lig_statut_personnalise->nom_statut.") "; } echo "Préciser/modifier le statut 'autre'"; } } ?>

Identifiant STS :
Cet identifiant est utilisé pour la liaison LSU et pour la liaison éventuelle avec un serveur LCS.
Il est préfixé d'un P pour les professeurs lors de l'import.
Vous ne devriez pas modifier cet identifiant s'il a été correctement importé lors de l'initialisation.
Type STS :

Etat :
si professeur) : "; $temp = "matiere_".$k; echo "
\n"; $k++; } $nb_mat++; if (isset($user_login) and ($user_login!='') and ($user_statut=='scolarite')) { echo "Suivez ce lien pour associer le compte avec des classes.
\n"; } // Déverrouillage d'un compte if (isset($user_login) and ($user_login!='')) { $day_now = date("d"); $month_now = date("m"); $year_now = date("Y"); $hour_now = date("H"); $minute_now = date("i"); $seconde_now = date("s"); $now = mktime($hour_now, $minute_now, $seconde_now, $month_now, $day_now, $year_now); $annee_verrouillage = mb_substr($date_verrouillage,0,4); $mois_verrouillage = mb_substr($date_verrouillage,5,2); $jour_verrouillage = mb_substr($date_verrouillage,8,2); $heures_verrouillage = mb_substr($date_verrouillage,11,2); $minutes_verrouillage = mb_substr($date_verrouillage,14,2); $secondes_verrouillage = mb_substr($date_verrouillage,17,2); $date_verrouillage = mktime($heures_verrouillage, $minutes_verrouillage, $secondes_verrouillage, $mois_verrouillage, $jour_verrouillage, $annee_verrouillage); if ($date_verrouillage > ($now- getSettingValue("temps_compte_verrouille")*60)) { echo "
\n"; echo "

Verrouillage/Déverrouillage du compte

\n"; echo "Suite à un trop grand nombre de tentatives de connexions infructueuses, le compte est actuellement verrouillé."; echo "
Cochez la case pour deverrouiller le compte"; echo "
\n"; } } echo "\n"; ?> \n"; ?>
0) { echo "

 

\n"; echo "
\n"; echo "
Enseignements du professeur"; echo add_token_field(); echo "

Le professeur est associé aux enseignements suivants.
Vous pouvez supprimer (décocher) l'association avec certains enseignements :

"; $k = 0; foreach($groups as $current_group) { echo " Éditer cet enseignement
\n"; $k++; } echo "\n"; echo "\n"; echo "
\n"; echo "
\n"; echo "
\n"; } } echo "

 

\n"; if((isset($user_login))&&($journal_connexions=='n')) { echo "

Journal des connexions

\n"; } if($journal_connexions=='y') { // Journal des connexions echo "\n"; if (isset($_POST['duree'])) { $duree = $_POST['duree']; } else { $duree = '7'; } journal_connexions($user_login,$duree,'modify_user'); } echo "

 

\n"; ?>